# save_icon_ico.py
import sys
import os
from PyQt6.QtWidgets import QApplication, QStyle
from PyQt6.QtGui import QIcon, QPixmap


def save_icon_as_ico():
    app = QApplication(sys.argv)

    # 获取标准图标
    style = app.style()
    icon = style.standardIcon(QStyle.StandardPixmap.SP_ComputerIcon)

    # 创建icons目录（如果不存在）
    os.makedirs('icons', exist_ok=True)

    # 创建多尺寸图标并保存为ICO文件
    try:
        from PIL import Image

        # 创建不同尺寸的图像
        sizes = [16, 32, 48, 64, 128, 256]
        images = []

        for size in sizes:
            pixmap = icon.pixmap(size, size)
            # 转换为PIL图像
            image = pixmap.toImage()
            # 转换为PIL格式
            byte_data = image.bits().asarray(image.width() * image.height() * 4)
            pil_image = Image.frombuffer('RGBA', (image.width(), image.height()), byte_data, 'raw', 'RGBA', 0, 1)
            images.append(pil_image)

        # 保存为ICO文件
        ico_path = 'icons/app_icon.ico'
        images[0].save(ico_path, format='ICO', sizes=[(s, s) for s in sizes])
        print(f"ICO文件保存成功: {os.path.abspath(ico_path)}")

    except ImportError:
        print("PIL库未安装，无法直接生成ICO文件")
        print("请安装: pip install Pillow")

        # 保存为PNG文件
        pixmap = icon.pixmap(256, 256)
        png_path = 'icons/app_icon.png'
        success = pixmap.save(png_path)
        print(f"PNG保存结果: {success}")
        print(f"PNG文件路径: {os.path.abspath(png_path)}")
        print("请使用在线工具将PNG转换为ICO格式")


if __name__ == "__main__":
    save_icon_as_ico()